description('Test the disabled property on an svg style element.');

var console = document.getElementById('console');

// Setup
function createStyle(ns, type, ruletext) {
    var style = document.createElementNS(ns, "style");
    var rules = document.createTextNode(ruletext);
    style.appendChild(rules);
    style.type = type;
    return style;
}

var xmlns = "http://www.w3.org/2000/svg";
var svg = document.createElementNS(xmlns, "svg");
svg.style.display = "block";

var defs = document.createElementNS(xmlns, "defs");
var styleElement = createStyle(xmlns, "text/css", "rect { fill: #0000ff; }");
var otherStyleElement = createStyle(xmlns, "foo/bar", "");
defs.appendChild(styleElement);
defs.appendChild(otherStyleElement);
svg.appendChild(defs);

var rect = document.createElementNS(xmlns, "rect");
rect.setAttribute("width", 100);
rect.setAttribute("height", 100);
svg.appendChild(rect);

document.body.appendChild(svg);

// Simple case
shouldBeFalse('styleElement.disabled');
shouldBe('window.getComputedStyle(rect).fill', '"rgb(0, 0, 255)"');

styleElement.disabled = true
shouldBeTrue('styleElement.disabled');
shouldBe('window.getComputedStyle(rect).fill', '"rgb(255, 0, 0)"');

// Test disconnected element
var newStyleElement = document.createElementNS(xmlns, 'style');
shouldBeFalse('newStyleElement.disabled');
newStyleElement.disabled = true
shouldBeFalse('newStyleElement.disabled');

// Test non-CSS element
shouldBeFalse('otherStyleElement.disabled');
otherStyleElement.disabled = true
shouldBeFalse('otherStyleElement.disabled');

document.body.removeChild(svg);
